package com.android.adpater.interfaces;

import androidx.annotation.NonNull;

import java.util.List;

/**
 * Adapter 数据接口
 * @param <T>
 */
@SuppressWarnings("unused")
public interface IData<T> {

  /**
   * 获取数据size
   * @return
   */
  int getCount();

  T getItem(int position);

  /**
   * 获取当前数据列表
   */
  List<T> getData();

  /**
   * 设置数据集
   *
   * @param list 数据集
   */
  void setData(@NonNull List<T> list);

  /**
   * 添加一条数据
   */
  void add(@NonNull T item);

  /**
   * 插入一条数据
   * @param position 位置
   * @param item 数据
   */
  void insert(int position,@NonNull T item);

  /**
   * 添加多条数据
   */
  void addAll(@NonNull List<T> list);

  /**
   * 添加数据集
   *
   * @param datas 数据
   */
  void addArray(@NonNull T[] datas);

  /**
   * 更新一条数据
   */
  void set(@NonNull T oldItem, @NonNull T newItem);

  /**
   * 根据下标更新一条数据
   */
  void set(int index, @NonNull T item);

  /**
   * 删除一条数据
   */
  void remove(@NonNull T item);

  /**
   * 根据下标删除一条数据
   */
  void remove(int index);

  /**
   * 替换所有数据
   */
  void replaceAll(@NonNull List<T> item);

  /**
   * 是否存在某个对象
   */
  boolean contains(@NonNull T item);

  /**
   * 清空数据
   */
  void clear();

}